package second.codeTop.package1;

/**
 * @ClassName LC88
 * @description:
 * @author: 荣燊
 * @create: 2022-03-29 10:35
 **/
public class LC88 {
    public static void main(String[] args) {
        int[] nums1 = {0};
        int m = 0;
        int[] nums2 = {1};
        int n = 1;
        merge(nums1, m, nums2, n);
    }

    // 结果保存在数据nums1中
//    public static void merge(int[] nums1, int m, int[] nums2, int n) {
//        int i = nums1.length-1;
//        if (m == 0) {
//            for (int j=0; j<nums1.length; j++) {
//                nums1[j] = nums2[j];
//            }
//        }
//        while (m > 0 && n > 0) {
//            if (nums2[n-1] > nums1[m-1]) {
//                nums1[i] = nums2[n-1];
//                n--;
//            } else {
//                nums1[i] = nums1[m-1];
//                m--;
//            }
//            i--;
//        }
//    }

    // 从后向前
    public static void merge(int[] nums1, int m, int[] nums2, int n) {
        int p1 = m-1;
        int p2 = n-1;
        int tail = m+n-1;
        int cur = 0;
        while (p1 >= 0 || p2 >= 0) {
            if (p1 == -1) {
                cur = nums2[p2];
                p2--;
            } else if (p2 == -1) {
                cur = nums1[p1--];
            } else if (nums1[p1] > nums2[p2]) {
                cur = nums1[p1--];
            } else {
                cur = nums2[p2--];
            }
            nums1[tail--] = cur;
        }
    }
}
